Acquiring Information from Sources Responsive to Naturally-Spoken-Speech Commands Provided by a Voice-Enabled Device

ABSTRACT

The present invention relates to a system for acquiring information from sources on a network, such as the Internet. A voice browsing system maintains a database containing a list of information sources, such as web sites, connected to a network. Each of the information sources is assigned a rank number which is listed in the database along with the record for the information source. In response to a speech command received from a user, a network interface system accesses the information source with the highest rank number in order to retrieve information requested by the user.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of application Ser. No. 15/269,776,entitled “Acquiring Information from Sources Responsive toNaturally-Spoken-Speech Commands Provided by a Voice-Enabled Device,”filed Sep. 19, 2016, which is a continuation of Ser. No. 13/462,819,entitled “Robust Voice Browser System and Voice Activated DeviceController,” filed May 3, 2012, which is a continuation of applicationSer. No. 12/973,475, entitled “Robust Voice Browser System And VoiceActivated Device Controller,” filed Dec. 20, 2010, which is acontinuation of application Ser. No. 12/030,556, entitled “Robust VoiceBrowser System And Voice Activated Device Controller,” filed Feb. 13,2008, now U.S. Pat. No. 7,881,941, which is a continuation applicationof application Ser. No. 11/409,703, entitled “Robust Voice BrowserSystem And Voice Activated Device Controller,” filed Apr. 24, 2006, nowU.S. Pat. No. 7,386,455, which is a continuation application ofapplication Ser. No. 10/821,690, entitled “Robust Voice Browser SystemAnd Voice Activated Device Controller,” filed Apr. 9, 2004, now U.S.Pat. No. 7,076,431, which is a continuation application of applicationSer. No. 09/776,996, entitled “Robust Voice Browser System And VoiceActivated Device Controller,” filed Feb. 5, 2001, now U.S. Pat. No.6,721,705, which claims priority to U.S. Provisional Application Ser.No. 60/180,344, entitled “Voice Activated Information Retrieval System,”filed Feb. 4, 2000 and U.S. Provisional Application No. 60/233,068,filed Sep. 15, 2000, entitled “Robust Voice Browser System and VoiceActivated Device Controller, all assigned to the assignee of the presentapplication. The subject matter in the above-identified co-pending andcommonly owned applications is incorporated herein by reference.

FIELD OF THE INVENTION

The present invention relates to a robust and highly reliable systemthat allows users to browse web sites and retrieve information by usingconversational voice commands. Additionally, the present inventionallows users to control and monitor other systems and devices that areconnected the Internet or any other network by using voice commands.

BACKGROUND OF THE INVENTION

Currently, three options exist for a user who wishes to gatherinformation from a web site accessible over the Internet. The firstoption is to use a desktop or a laptop computer connected to a telephoneline via a modem or connected to a network with Internet access. Thesecond option is to use a Personal Digital Assistant (PDA) that has thecapability of connecting to the Internet either through a modem or awireless connection. The third option is to use one of the newlydesigned web-phones or web-pagers that are now being offered on themarket. Although each of these options provide a user with access to theInternet to browse web sites, each of them have their own drawbacks.

Desktop computers are very large and bulky and are difficult totransport. Laptop computers solve this inconvenience, but many are stillquite heavy and are inconvenient to carry. Further, laptop computerscannot be carried and used everywhere a user travels. For instance, if auser wishes to obtain information from a remote location where noelectricity or communication lines are installed, it would be nearlyimpossible to use a laptop computer. Oftentimes, information is neededon an immediate basis where a computer is not accessible. Furthermore,the use of laptop or desktop computers to access the Internet requireseither a direct or a dial-up connection tan an Internet Service Provider(ISP). Oftentimes, such connections are not available when a userdesires to connect to the Internet to acquire information.

The second option for remotely accessing web sites is the use of PDAs.These devices also have their own set of drawbacks. First, PDAs with theability to connect to the Internet and access web sites are not readilyavailable. As a result, these PDAs tend to be very expensive.Furthermore, users are usually required to pay a special service fee toenable the web browsing feature of the PDA. A further disadvantage ofthese PDAS is that web sites must be specifically designed to allowthese devices to access information on the web site. Therefore, alimited number of web sites are available that are accessible by theseweb-enabled PDAs. Finally, it is very common today for users to carrycell phones, however, users must also carry a separate PDA if theyrequire the ability to gather information from various web sites. Usersare therefore subjected to added expenses since they must pay for bothcellular telephone service and also for the web-enabling service for thePDA. This results in a very expensive alternative for the consumer.

The third alternative mentioned above is the use of web-phones orweb-pagers. These devices suffer many of the same drawbacks as PDAs.First, these devices are expensive to purchase. Further, the number ofweb sites accessible to these devices is limited since web sites must bespecifically designed to allow access by these devices. Furthermore,users are often required to pay an additional fee in order to gainwireless web access. Again, this service is expensive. Another drawbackof these web-phones or web-pagers is that as technology develops, themethods used by the various web sites to allow access by these devicesmay change. These changes may require users to purchase new web-phonesor web-pagers or have the current device serviced in order to upgradethe firmware or operating system stored within the device. At the least,this would be inconvenient to users and may actually be quite expensive.

Therefore, a need exists for a system that allows users to easily accessand browse the Internet from any location. Such a system would onlyrequire users to have access to any type of telephone and would notrequire users to subscribe to multiple services.

In the rapidly changing area of Internet applications, web sites changefrequently. The design of the web site may change, the informationrequired by the web site in order to perform searches may change, andthe method of reporting search results may change. Web browsingapplications that submit search requests and interpret responses fromthese web sites based upon expected formats will produce errors anduseless responses when such changes occur. Therefore, a need exists fora system that can detect modifications to web sites and adapt to suchchanges in order to quickly and accurately provide the informationrequested by a user through a voice enabled device, such as a telephone.

When users access web sites using devices such as personal computers,delays in receiving responses are tolerated and are even expected,however, such delays are not expected when a user communicates with atelephone. Users expect communications over a telephone to occurimmediately with a minimal amount of delay time. A user attempting tofind information using a telephone expects immediate responses to hissearch requests. A system that introduces too much delay between thetime a user makes a request and the time of response will not betolerated by users and will lose its usefulness. Therefore, it isimportant that a voice browsing system that uses telephoniccommunications selects web sites that provide rapid responses sincespeed is an important factor for maintaining the system's desirabilityand usability. Therefore, a need exists for a system that accesses websites based upon their speed of operation.

SUMMARY OF THE INVENTION

It is an object of an embodiment of the present invention to allow usersto gather information from web sites by using voice enabled devices,such as wireline or wireless telephones.

An additional object of an embodiment of the present invention is toprovide a system and method that allows the searching and retrieving ofpublicly available information by controlling a web browsing serverusing naturally spoken voice commands.

It is an object of another embodiment of the present invention toprovide a robust voice browsing system that can obtain the sameinformation from several web sites based upon a ranking order. Theranking order is automatically adjusted if the system detects that agiven web site is not functioning, is too slow, or has been modified insuch a way that the requested information cannot be retrieved anylonger.

A still further object of an embodiment of the present invention is toallow users to gather information from web sites from any location wherea telephonic connection can be made.

Another object of an embodiment of the present invention is to allowsusers to browse web sites on the Internet using conversational voicecommands spoken into wireless or wireline telephones or other voiceenabled devices.

An additional object an embodiment of the present invention is toprovide a system and method for using voice commands to control andmonitor devices connected to a network.

It is an object of an embodiment of the present invention to provide asystem and method which allows devices connected to a network to becontrolled by conversational voice commands spoken into any voiceenabled device interconnected with the same network.

The present invention relates to a system for acquiring information fromsources on a network, such as the Internet. A voice browsing systemmaintains a database containing a list of information sources, such asweb sites, connected to a network. Each of the information sources isassigned a rank number which is listed in the database along with therecord for the information source. In response to a speech commandreceived from a user, a network interface system accesses theinformation source with the highest rank number in order to retrieveinformation requested by the user.

The a preferred embodiment of the present invention allows users toaccess and browse web sites when they do not have access to computerswith Internet access. This is accomplished by providing a voice browsingsystem and method that allows users to browse web sites usingconversational voice commands spoken into any type of voice enableddevice (i.e., any type of wireline or wireless telephone, LP phone,wireless PDA, or other wireless device). These spoken commands are thenconverted into data messages by a speech recognition software enginerunning on a user interface system. These data messages are then sent toand processed by a network interface system. This network interfacesystem then generates the proper requests that are transmitted to thedesired web site over the Internet. Responses sent from the web site arereceived and processed by the network interface system and thenconverted into an audio message via a speech synthesis engine or apre-recorded audio concatenation application and finally transmitted tothe user's voice enabled device.

A preferred embodiment of the voice browser system and method uses a website polling and ranking methodology that allows the system to detectchanges in web sites and adapt to those changes in real-time. Thisenables the voice browser system of a preferred embodiment to deliverhighly reliable information to users over any voice enabled device. Thisranking system also enables the present invention to provide rapidresponses to user requests. Long delays before receiving responses torequests are not tolerated by users of voice-based systems, such astelephones. When a user speaks into a telephone, an almost immediateresponse is expected. This expectation does not exist for non-voicecommunications, such as email transmissions or accessing a web siteusing a personal computer. In such situations, a reasonable amount oftransmission delay is acceptable. The ranking system of implemented by apreferred embodiment of the present invention ensures users will alwaysreceive the fastest possible response to their request.

An alternative embodiment of the present invention allows users tocontrol and monitor the operation of a variety of household devicesconnected to a network using speech commands spoken into a voice enableddevice.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a depiction of the voice browsing system of the firstembodiment of the present invention;

FIG. 2 is a block diagram of a database record used by the firstpreferred embodiment of the present invention;

FIG. 3 is a block diagram of a media server used by the preferredembodiment;

FIG. 4 is a block diagram of a web browsing server used by the preferredembodiment; and

FIG. 5 is a depiction of the device browsing system of the secondembodiment of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

A first embodiment of the present invention is a system and method forallowing users to browse information sources, such as web sites, byusing naturally spoken, conversational voice commands spoken into avoice enabled device. Users are not required to learn a special languageor command set in order to communicate with the voice browsing system ofthe present invention. Common and ordinary commands and phrases are allthat is required for a user to operate the voice browsing system. Thevoice browsing system recognizes naturally spoken voice commands and isspeaker-independent; it does not have to be trained to recognize thevoice patterns of each individual user. Such speech recognition systemsuse phonemes to recognize spoken words and not predefined voicepatterns.

The first embodiment allows users to select from various categories ofinformation and to search those categories for desired data by usingconversational voice commands. The voice browsing system of the firstpreferred embodiment includes a user interface system referred to as amedia server. The media server contains a speech recognition softwareengine. This speech recognition engine is used to recognize natural,conversational voice commands spoken by the user and converts them intodata messages based on the available recognition grammar. These datamessages are then sent to a network interface system. In the firstpreferred embodiment, the network interface system is referred to as aweb browsing server. The web browsing server then accesses theappropriate information source, such as a web site, to gatherinformation requested by the user.

Responses received from the information sources are then transferred tothe media server where speech synthesis engine converts the responsesinto audio messages that are transmitted to the user. A more detaileddescription of this embodiment will now be provided.

Referring to FIG. 1, a database 100 designed by Webley SystemsIncorporated is connected to one or more web browsing servers 102 aswell as to one or more media servers 106. The database may storeinformation on magnetic media, such as a hard disk drive, or it maystore information via other widely acceptable methods for storing data,such as optical disks. The database 100 contains a separate set ofrecords for each web site accessible by the system. An example of a website record is shown in FIG. 2. Each web site record 200 contains therank number of the web site 202, the associated Uniform Resource Locator(URL) 204, and a command that enables the appropriate “extraction agent”206 that is required in order to generate proper requests sent to and toformat data received from the web site. The database record 200 alsocontains the timestamp 208 indicating the last time the web site wasaccessed. The extraction agent is described in more detail below. Thedatabase 100 categorizes each database record 200 according to the typeof information provided by each web site. For instance, a first categoryof database records 200 may correspond to web sites that provide“weather” information. The database 100 may also contain a secondcategory of records 200 for web sites that provide “stock” information.These categories may be further divided into subcategories. Forinstance, the “weather” category may contain subcategories dependingupon type of weather information available to a user, such as “currentweather” or “extended forecast”. Within the “extended forecast”subcategory, a list of web site records may be stored that provideweather information for multiple days. The use of subcategories mayallow the web browsing feature to provide more accurate, relevant, andup-to-date information to the user by accessing the most relevant website. The number of records contained in each category or subcategory isnot limited. In the preferred embodiment, three web site records areprovided for each category.

Table 1 below depicts two database records 200 that are used with thepreferred embodiment. These records also contain a field indicating the“category” of the record, which is “weather” in each of these examples.

TABLE 1 category: weather URL:URL=http://cgi.cnn.com/cgi-bin/weather/redirect?zip=_zip rank: 1 command: web_dispatch.plweather_cnn browsingServer: wportal1 browsingServerBackup: wportal2dateTime: Dec 21 2000 2:15 PM category: weather URL: URL= http://weather.lycos.com/wcfiveday.asp?city=zip rank: 2 command:web_dispatch.pl weather_lycos browsingServer: wportal1browsingServerBackup: wportal2 dateTime: Dec 21 2000 1:45 PM

The database also contains a listing of pre-recorded audio files used tocreate concatenated phrases and sentences. Further, database 100 maycontain customer profile information, system activity reports, and anyother data or software servers necessary for the testing oradministration of the voice browsing system.

The operation of the media servers 106 will now be discussed in relationto FIG. 3. The media servers 106 function as user interface systems. Inthe preferred embodiment, the media servers 106 contain a speechrecognition engine 300, a speech synthesis engine 302, an InteractiveVoice Response (IVR) application 304, a call processing system 306, andtelephony and voice hardware 308 required to communicate with the PublicSwitched Telephone Network (PSTN) 116. In the preferred embodiment, eachmedia server is based upon Intel's Dual Pentium III 730 MHzmicroprocessor system.

The speech recognition function is performed by a speech recognitionengine 300 that converts voice commands received from the user's voiceenabled device 112 (i.e., any type of wireline or wireless telephone,Internet Protocol (IP) phones, or other special wireless units) intodata messages. In the preferred embodiment, voice commands and audiomessages are transmitted using the PSTN 116 and data is transmittedusing the TCP/IP communications protocol. However, one skilled in theart would recognize that other transmission protocols may be used foreither voice or data. Other possible transmission protocols wouldinclude SIP/VoIP (Session Initiation Protocol/Voice over IP),Asynchronous Transfer Mode (ATM) and Frame Relay. A preferred speechrecognition engine is developed by Nuance Communications of 1380 WillowRoad, Menlo Park, Calif. 94025 (www.nuance.com). The Nuance enginecapacity is measured in recognition units based on CPU type as definedin the vendor specification. The natural speech recognition grammars(i.e., what a user can say that will be recognized by the speechrecognition engine) were developed by Webley Systems.

Table 2 below provides a partial source code listing of the recognitiongrammars used by the speech recognition engine of the preferredembodiment for obtaining weather information.

TABLE 2 ?WHAT_IS ?the weather?[info information report conditions] ?((?like in) ] UScities:n {<paraml $n.zip> <param2 $n.city> <param3$n.state>}  ( (area code) AREA_CODE:n ) {<paraml $n>}  ( AREA_CODE:n(area code) ) {<paraml $n>}  ( (ZIP_CODE:n (zip ?code) ) {<paraml $n>} ]  ) ) {<mem 194>}

The media server 106 uses recognition results generated by the speechrecognition engine 300 to retrieve a web site record 200 stored in thedatabase 100 that can provide the information requested by the user. Themedia server 106 processes the recognition result data identifyingkeywords that are used to search the web site records 200 contained inthe database 100. For instance, if the user's request was “What is theweather in Chicago?”, the keywords “weather” and “Chicago” would berecognized. A web site record 200 with the highest rank number from the“weather” category within the database 100 would then be selected andtransmitted to the web browsing server 102 along with an identifierindicating that Chicago weather is being requested.

The media servers 106 also contain a speech synthesis engine 302 thatconverts the data retrieved by the web browsing servers 102 into audiomessages that are transmitted to the user's voice enabled device 112. Apreferred speech synthesis engine is developed by Lernout and HauspieSpeech Products, 52 Third Avenue, Burlington, Mass. 01803(www.lhsl.com).

A further description of the web browsing server 102 will be provided inrelation to FIG. 4. The web browsing servers 102 provide access to anycomputer network such as the Internet 110. These servers are alsocapable of accessing databases stored on Local Area Networks (LANs) orWide Area Networks (WANs). The web browsing servers receive responsesfrom web sites and extract the data requested by the user. This task isalso known as “content extraction.” The web browsing servers 102 alsoperform the task of periodically polling or “pinging” various web sitesand modifying the ranking numbers of these web sites depending upontheir response and speed. This polling feature is further discussedbelow. The web browsing server 102 is comprised of a content extractionagent 400, a content fetcher 402, a polling and ranking agent 404, andthe content descriptor files 406. Each of these are softwareapplications and will be discussed below.

Upon receiving a web site record 200 from the database 100 in responseto a user request, the web browsing server 102 invokes the “contentextraction agent” command 206 contained in the record 200. The contentextraction agent 400 allows the web browsing server 102 to properlyformat requests and read responses provided by the web site 114identified in the URL field 204 of the web site record 200. Each contentextraction agent command 206 invokes the content extraction agent andidentifies a content description file associated with the web pageidentified by the URL 204. This content description the directs theextraction agent where to extract data from the accessed web page andhow to format a response to the user utilizing that data. For example,the content description for a web page providing weather informationwould indicate where to insert the “city” name or ZIP code in order toretrieve Chicago weather information. Additionally, the contentdescription file for each supported URL indicates the location on theweb page where the response information is provided. The extractionagent 400 uses this information to properly extract from the web pagethe information requested by the user.

Table 3 below contains source code for a content extraction agent 400used by the preferred embodiment.

TABLE 3 #!/usr/local/www/bin/sybper15 #$Header:/usr/local/cvsroot/webley/agents/service/web_dispatch.pl,v 1.6 #Dispatches all web requests#http://wcorp.itn.net/cgi/flstat?carrier=ua&flight_no=155&mon_abbr=jul&date= 6&stamp=OhLN~PdbuuE*itn/ord,itn/cb/sprint_hd#http://cgi.cnnfn.com/flightview/rlm?airline=amt&number=300 require“config_tmp.pl” ; #check parameters die “Usage: $0 service [params]\n”if $#ARGV < 1; #print STDERR @ARGV; #get parameters my %Services = (weather_cnn => ‘webget.pl weather_cnn’, weather_lycos => ‘webget.plweather_lycos’, weather_weather => ‘webget.pl weather_weather’,weather_snap => ‘webget.pl weather_snap’, weather_infospace =>‘webget.pl weather_infospace’, stockQuote_yahoo => ‘webget.pl stock’,flightStatus_itn => ‘webget.pl flight_delay’, yellowPages_yahoo =>‘yp_data.pl’, yellowPages_yahoo => ‘yp_data.pl’, newsHeaders_newsreal =>‘news.pl’, newsArticle_newsreal => ‘news.pl’, ) ; # test param my $date= ‘date’; chop ( $date ); my ( $short_date ) = $date =~ / \s+(\w{3}\s+\d{1,2})\s+/; my %Test = ( weather_cnn => ‘60053’,weather_lycos => ‘60053’, weather_weather => ‘60053’, weather_snap =>‘60053’, weather_infospace => ‘60053’, stockQuote_yahoo => ‘msft’,flightStatus_itn => ‘ua 155’ . $short_date, yellowPages_yahoo => ‘tires60015’, newsHeaders_newsreal => ‘1’, newsArticle_newsreal => ‘1 1’, );die “$date: $0: error: no such service: $service (check this script)\n”unless $Services {$service }; # prepare absolute path to run otherscripts my ( $path, $script ) = $0 =~ ml{circumflex over ( )} (*/)([{circumflex over ( )}/]*) | ; # store the service to compare againstdatatable my $service_stored = $service; # run service While ( !($response = ‘$path$Services [$service }@param’ ) ) { # response failed #check with test parameters $response = ‘$path$Services{service}$Test{$service }”; if ( $response ) { $service = &switch_service ($service ); # print “Wrong parameter values were supplied: $service -@param\n”; # die “$date: $0: error: wrong parameters: $service -@param\n”; } else { # change priority and notify $service =&increase_attempt( $service ) ; } } # output the response print$response; sub increase_attempt { my ( $service ) = @_; my ($service_name ) + split ( /_/, $service ); print STDERR “$date: $0:attn.: changing priority for service: $service\n”; # update priority&db_query( “update mcServiceRoute ” / “set priority = ( select max (priority ) from mcServiceRoute “ . “where service = ‘$service_name’ ) +1 “ . “ date = getdate( ), ” . “attempt = attempt + 1 ” . “where route =‘$script $service’ ” ); # print “---$route===\n”; # find new route my$route = @{&db_query( “select route from mcServiceRoute “ . “whereservice = ‘$service_name’ ” . “and attempt < 5 “ . “order by priority ”)} −> [0] {route }; &db_query( “update mcServiceRoute “ . “set attempt =) “ . “where route = ‘$script $service’ ” ) if ( $route eq “$script$service_stored” ) ; or $route eq “$script $service_stored” ) ; ($service_name, $service ) = split( / \ s + /, $route ); die “$date: $0:error: no route for the service: $service (add more) \n” unless$service; return $service; } sub switch_swervice { my ( $service ) = @_;my ( $service_name ) = split( /_/, $service ); print STDERR “$date: $0:attn.: changing priority for service: $service\n”; # update priority&db_query( “update mcServiceRoute “ . “set priority = ( select max (priority ) from mcServiceRoute ” . “ where service = ‘$service_name’ ) +1, “ . “ date = getdate ( ) ” . “ where route = ‘$script $service’ ” ) ;# print “---$route===\n”; # find new route my $route = @{&db_query(“select route from mcServiceRoute ” . “where service = ‘$service_name’ ”. “ and attempt < 5 “ . “order by priority “) } − > [0] {route }; die “$date: $0: error: there is the only service: $route (add more) \n” if ($route eq “$script $service” or $route eq “$script $service_stored” ) ;( $service_name, $service ) = split( / \s+/, $route ); die “$date: $0:error: no route for the service: $service (add more) \n” nless $service;return $service; } -

Table 4 below contains source code of the content fetcher 402 used withthe content extraction agent 400 to retrieve information from a website.

TABLE 4 #!/usr/local/www/bin/sybper15 #-T # -w # $Header:/usr/local/cvsroote/Webley/agents/service/webget.pl,v 1.4 # Agent to getinfo from the web. # Parameters: service_name [service_parameters], i.e.stock msft or weather 60645 # Configuration stored in filesservice_name.ini # if this file is absent the configuration is receivedfrom mcServices table # This script provides autoupdate to datatable ifthe .ini file is newer. $debug= 1; use URI : : URL; use LWP : :UserAgent; use HTTP : : Request : : Common; use Vail : : VarList; useSybase : : CTlib; use HTTP : : Cookies; #print “Sybase: : CTlib $DB_USR,$DB_PWD, $DB_SRV;” ; open (STDERR, “>>$0.log” ) if $debug; #open (STDERR, “>&STDOUT” ) ; $log = ‘date’; #$response = ‘./url.plhttp://cgi.cnn.com/cgi-bin/weather/redirect?zip=60605” ‘; #$response =‘pwd’; #print STDERR “ ls = $response\n” ; #$response = ‘ls’; #printSTDERR “ls = $response\n”; chop ( $log ); $log .= “pwd=” . ‘pwd’; chop ($log ); #$debug2 = 1; my $service = shift; $log .= “ $service: “. Join(‘ : ’, @ARGV ) . “\n” ; Print STDERR $log if $debug; #$response =‘./url.pl “/http://cgi.cnn.com/cgi-bin/weather/redirect?zip=60605” ‘; my@ini = &read_ini ( $service ); chop( @ini ); my $section = “ “ ; do($section = &process_section ( $section ) }while $section; #$response =‘./url.pl “http://cgi.cnn.com/cgi-bin/weather/redirect?zip=60605” ’;exit; sub read_ini { my ( $service ) = @_; my @ini = ( ); # first, tryto read file $0 =~ m|{circumflex over ( )} (.*/) [{circumflex over( )}/]*|; $service = $1 . $service; if ( open ( INI, “$service.ini” ) ){ @ ini = ( <INI> ); return @ ini unless ( $DB_SRV ); # update datatableMy $file_time = time − int( ( -M “$service.ini” ) * 24* 3600 ) ; # print“time $file_time\n”; my $dbh = new Sybase: : CTlib $DB_USR, $DB_PWD,$DB_SRV; unless ( $dbh ) { print STDERR “webget.pl: Cannot connect todataserver $DB_SRV:$DB_USR:$DB_PWD\n”; return @ini; } my @row_refs =$dbh −> ct_sql ( “select lastUpdate from mcServices where service =‘$service’ ”, undef, 1 ); if ($dbh −> RC } == CS_FAIL ) { print STDERR“webget.pl: DB select from mcServices failed\n”; return @ini; } unless(defined @ row_refs ) { # have to insert my ( @ini_escaped ) = map { (my $x = $_ ) =~ } s/ \’ / \ ‘ \’ / g; $x; }@ini; $dbh−> ct_sql ( “insertmcServices values ( ‘$service’, ‘@ini_escaped’, $file_time )” ); if ($dbh−> {RC } =− CS_FAIL ) { print STDERR “webget,pl: DB insert tomcServices failed\n”; } return @ini; } Print “time$file_time:”.$row_refs [ 0 ] − >{‘lastUpdate’ } . “ \n” ; if ($file_time > $row_refs [0] => {‘lastUpdate’ }) { # have to update my (@ini_escaped ) = map { ( my $x = $_ ) =~s/ \‘/ \‘\‘/g; $x; }@ini;$dbh−>ct_sql ( “update mcServices set config = ‘@ini_escaped’,lastUpdate = $file_time where service = ‘$service’ ” ); if ( $dbh −> {RC} ==CS_FAIL ) { print STDERR “webget.pl: DB update to mcServicesfailed\n”; } } return @ini; } else { print STDERR “$0: WARNING:$service.ini n/a in” . ‘pwd’ . “Try to read DB\n”; } # then try to readdatatable die “webget.pl: Unable to find service $service\n” unless ($DB_SRV) ) ; my $dbh = new Sybase : : CTlib $DB_USR, $DB_PWD, $DB_SRV;die “webgetlpl: Cannot connect to dataserver $DB_SRV : $DB_USR:$DB_PWD\n” unless ( $dbh ); my @row_refs = $dbh −> ct_sql ( “selectconfig from mcServices where service = ‘$service’ ”, undef, 1 ); die“webget.pl: Unable to find service $service\n” unless ( defined@row_refs ) ; $row_refs [0] −> {‘config’ } =~ s/\n /\n\r/g; @ini = split( / \ r /, $row_refs [ 0 ] −> {‘config’ } ); return @ini; } -#########################################################################sub process_section { my ( $prev_section ) = @_; my ( $section, $output,$content ); my %Param; my %Content; # print” ######################\n”; foreach ( @ini ) { # print; # chop; s/ \s+ $ / / ; s/ {circumflex over( )} \s+ / /; # get section name if( /{circumflex over ( )}\ [ (.* ) / ]/ ) { # print “$_: $section:$prev_section\n”; last if $section; next if$1 eq “print” ; next if $prev_section ne ” ” and $prev_section ne $1; if( $prev_section eq $1 ) {  $prev_section = ” ”  next; } $section = $1; }# get parameters push ( @{$Param{$1 }}, $2 ) if $section and/([{circumflex over ( )}=]+) − (.*) / ; } # print”++++++++++++++++++++++++++++++++++\n” ; return 0 unless $section; #print “section $section\n”; # substitute parameters with values map{$Param{URL } −> [ 0 ] =~ s/$Param{ Input } −> [ $_ ] / $ARGV [ $_ ] / g}0 . . $#{$Param{Input }}; # get page content ( $Content{‘TIME’ },$content ) = &get_url_content ( ${$Param {URL } } [ 0 ] ) ; # filter itmap { if ( / \” ([{circumflex over ( )}\”] + ) \” ([{circumflex over( )}\”]*) \” / or / \ / ( [{circumflex over ( )} \ / ] + ) \ / ( [{circumflex over ( )} \ /]*) \ / / ) { my $out = $2; $content =~s/$1/$out/g; } -}@{$Param {“Pre-filter” } }; #print STDERR $content; #domain regular expression unless ( @values = $content =~ /$ {$Param{Regular_expression } } [ 0 ] / ) { &die_hard (${$Param{Regular_expression } } [0 ], $content ); return $section; }%Content = map { ( $Param[Output } −> [ $_ ], $values [ $_ ] ) }0 . .$*{$Param{Output }} ; # filter it map { if ( / ([{circumflex over( )}\”]+) \ ” ([{circumflex over ( )}\”] +) \ = ( [{circumflex over( )}\”] +) \ “ /  or / ([{circumflex over ( )}\ /]+) \ / ([{circumflexover ( )} \ / ] + ) \ / ( [ {circumflex over ( )} \ / ] * ) \ / / ) { my$out = $3;  $Content {$1 } =~ s/$2/$out/g; } _ }@{Param {“Pre-filer” }}; #print STDERR $content; # do main regular expression unless ( @values= $content =~ /${$Param{Regular_expression } } [ 0 ] / ) { &die_hard(${$Param{Regular_expression}} [ 0 ], $content ); return $section; }%Content= map { ( $Param{Output }−>[ $_ ], $values [ $_ ] ) }0 ..$#{$Param{Output }}; #filter it map { if ( / ([ {circumflex over ( )}\”] +) \ “ ( [ {circumflex over ( )}\”]+) \ “ ( [ {circumflex over ( )}\ “ ] * ) \ “ /  or / ( [{circumflex over ( )}\ / ] + ) \ / ( [{circumflex over ( )} \ / ] + ) \ / ( [ {circumflex over ( )} \ / ] * )\ / / ) {   my $out = $3;  $Content {$1 } =~ s/$2/$out/g; }}@{$Param{“Post-filter” } }; # calculate it map { if { / ( [ {circumflexover ( )} = ] + ) = (.*) / ) { my $eval = $2; map {$eval =~ s/$_/$Content {$_ } / g } keys %Content;  $Content {$1 } = eval ($eval ) ; }}@{$Param{Calculate }}; # read section [print] foreach $i ( 0 .. $#ini ){ next unless $ini [ $i ] =~ /{circumflex over ( )}\ [print \ ] /; foreach ( $i + 1 . . $#ini ) { last if $ini [ $_ ] =~ /{circumflex over( )}\ [.+\]/;  $output .= $ini [ $_] . ″\n″; } last; } # prepare outputmap {$output =~ s/$_/$Content{$_} / g }keys %Content; print $output;-return 0; } ####################################################### subget_url_content { my ( $url ) = @_; print STDERR $url if $debug; #$response= ′./url.pl ′$url′ ′; $response = ′./url.pl ′$url′ ′; return($time − time, $response ); my $ua = LWP: :UserAgent−>new; $ua−>agent(′Mozilla/4.0 [en] (X11; I; freeBSD 2.2.8- STABLE i386)′ ) ; #$ua−>proxy( [′http′, ′https′], ′http://proxy.webley:3128/′ ) ; #$ua−>no_proxy( ′webley′, ′vail′ ); my $cookie= HTTP::Cookies−>new;$ua−>cookie_jar( $cookie ) ; $url = url $url; print ″$unl\n″ if $debug2;my $time = time; my $res = $ua−>request( GET $url ); print ″Response: ″. ( time − $time ″sec\n″ if $debug2; return( $time − time, $res−>content) ; }] ###################################################### subdie_hard { my ( $re, $content ) = @_; my ( $re_end, $pattern ) ; while($content !~ /$re/ ) { if ( $re =~ s/(\([″\(\))+\) [″\(\) | *$) / / ) }$re_end = $1 . $re_end; } else { $re_end = $re; last; } } $content =~/$re/; Print STDERR “The regular expression did not match:\n $ re\nPossible misuse: $re end:\n Matched: $&\n Mismatched: $′\n ″ if $debug;if ( $debug ) { print STDERR ″Content:\n $content\n″ unless $’; - } }#######################################################

Table 5 below contains the content descriptor file source code forobtaining weather information from the web site www.cnn.com that is usedby the extraction agent 400 of the preferred embodiment.

TABLE 5 [cnn] Input=_zipURL=http://cgi.cnn.com/cgi-bin/weather/redirect?zip=_zip Pre-filter=″\n″″ Pre-filter=″<[{circumflex over ( )}< >]+>″″ Pre-filter=/ \s+/ /Pre-filter=″ [ \ ( \) \ | ] ″ !″ Output=_location Output=first_day_nameOutput=first_day_weather Output=first_day_high_F Output=first_day_high_COutput=first_day_low_F Output=first_day_low_C Output=second_day_nameOutput=second_day_weather Output=second_day_high_FOutput=second_day_high_C Output=second_day_low_F Output=second_day_low_COutput=third_day_name Output=third_day_weather Output=third_day_high_FOutput=third_day_high_C Output=third_day_low_F Output=third_day_low_COutput=fourth_day_name Output=fourth_day_weatherOutput=fourth_day_high_F Output=fourth_day_high_COutput=fourth_day_low_F Output=fourth_day_low_C Output=undefOutput=_current_time Output=_current_month Output=_current_dayOutput=_current_weather Output=_current_tempenature_FOutput=_current_temperature_C Output=_humidity Output=_windOutput=_pressure Output=_sunrise Output=_sunsetRegular_expression=Author &nbsp; (.+) Four Day Forecast (\S+) (\S+) HIGH(\S+) F (\S+) C LOW (\S+) F (\S+) C (\S+) (\S+) HIGH (\S+) F (\S+) C LOW(\S+) F (\S+) C (\S+) (\S+) HIGH (\S+) F (\S+) C LOW (\S+) F (\S+) C(\S+) (\S+) HIGH (\S+) F (\S+J C LOW (\S+) F (\S+) C (.+) CurrentConditions (.+) ! local ! , (\S+) (\S+) (. t) Temp: (\S+) F, (\S+) CRel. Humidity: ( \S+) Wind: (.+) Pressure: (.+) Sunrise: (.+) Sunset:(.+) Related Links Post-filter=_current_weather″ p/″ partly ″Post-filter=_current weather″l/″little ″Post-filter=_current_weather″m/″mostly ″Post-filter=_current_weather″t-/thunder″ - Post-filter=_wind″N″North″Post-filter=_wind″E″East″ Post-filter=_wind″S″South ″ --Post-filter=_wind″W″West fl Post-filter=_wind/mph/miles per hour/Post-filter=_wind/kph!/kilometers per hour/ Post-filter=_wind″ \s+ !″, ”[print] Current weather in _location is_current_weather. Temperature is_current_temperature_F Fahrenheit, _current_temperature_C Celsium.Humidity is_humidity. Wind from the _wind.

Table 6 below contains the content descriptor file source code forobtaining weather information from the web site www.lycos.com that isused by the extraction agent 400 of the preferred embodiment.

TABLE 6 [lycos] Input=zip Input=_cityURL=http://weather.lycos.com/wcfiveday.asp?city=zip Pre-filter=″\n” ”Pne-filter=″</TD>”td″ Pre-filter=″<!.*?−>″″ Pre-filter=″<br>″_br_″Pre-filter=/alt″/>alt=/ Pre-filter=″<[{circumflex over ( )}< >]+>″″Pre-filter=″&nbsp;″ ″ Pre-filter=/ \s+/ / Output=_locationOutput=_current_weather Output=_current_temperature_F Output=_humidityOutput=_winddir Output=_windspeed Output=_windmeasure Output=_pressureOutput=first_day_name Output=second_day_name Output=third_day_nameOutput=fourth_day_name Output=fifth_day_name Output=first_day_weatherOutput=second_day_weather Output=third_day_weatherOutput=fourth_day_weather Output=fifth_day_weatherOutput=first_day_high_F Output=first_day_low_F Output=second_day_high_FOutput=second_day_low_F Output=third_day_high_F Output=third_day_low_FOutput =fourth_day_high_F Output=fourth_day_low_FOutput=fifth_day_high_F Output=fifth_day_low_F Output=_windkmh Regularexpression=Guide My Lycos (.+) Click image to enlarge alt=([{circumflexover ( )}″]+) ″ (?:.+) Temp: (\d+) (?:.+)F_br_Humidity: (\S+) (?:.+)Wind: (.+?) _br_ Output=_current_temperature_CPost-filter=_location″_br_″ ″ Post-filter=_current_weather″p/″partly ″Post-filter=_current_weather″m/″mostly ″ Post-filter=_currentweather″t-/″thunder ″ Post-filter=_winddir″@″ at″Post-filter=_winddir/mph/miles per hour/Post-filter=_wind/kph!/kilometers per hour/Calculate=_current_temperature_C=int ( (_current_temperature_F −32) *5/9) Calculate=_windkmh=int(_windspeed*1.6) [print] The current weatherin _location is _current_weather. The current temperature is_current_temperature_F_Farenheit _current_temperature_C Celsius.Humidity is _humidity. Winds _winddir.

Once the web browsing server 102 accesses the web site specified in theURL 204 and retrieves the requested information, the information isforwarded to the media server 106. The media server uses the speechsynthesis engine 302 to create an audio message that is then transmittedto the user's voice enabled device 112. In the preferred embodiment,each web browsing server 102 is based upon Intel's Dual Pentium III 730MHz microprocessor system.

Referring to FIG. 1, the operation of the robust voice browser systemwill be described. A user establishes a connection between his voiceenabled device 112 and a media server 106. This may be done using thePublic Switched Telephone Network (PSTN) 116 by calling a telephonenumber associated with the voice browsing system 118. Once theconnection is established, the media server 106 initiates an interactivevoice response (WR) application 304. The IVR application plays audiomessages to the user presenting a list of options, such as, “stockquotes”, “flight status”, “yellow pages”, “weather”, and “news”. Theseoptions are based upon the available web site categories and may bemodified as desired. The user selects the desired option by speaking thename of the option into the voice enabled device 112.

As an example, if a user wishes to obtain restaurant information, he mayspeak into his telephone the phrase “yellow pages”. The FIR applicationwould then ask the user what he would like to find and the user mayrespond by stating “restaurants”. The user may then be provided withfurther options related to searching for the desired restaurant. Forinstance, the user may be provided with the following restaurantoptions, “Mexican Restaurants”, “Italian Restaurants”, or “AmericanRestaurants”. The user then speaks into the telephone 112 the restauranttype of interest. The IVR application running on the media server 106may also request additional information limiting the geographic scope ofthe restaurants to be reported to the user. For instance, the IVRapplication may ask the user to identify the zip code of the area wherethe restaurant should be located. The media server 106 uses the speechrecognition engine 300 to interpret the speech commands received fromthe user. Based upon these commands, the media server 106 retrieves theappropriate web site record 200 from the database 100. This record andany additional data, which may include other necessary parameters neededto perform the user's request, are transmitted to a web browsing server102. A firewall 104 may be provided that separates the web browsingserver 102 from the database 100 and media server 106. The firewallprovides protection to the media server and database by preventingunauthorized access in the event the firewall for web browsing server108 fails or is compromised. Any type of firewall protection techniquecommonly known to one skilled in the art could be used, including packetfilter, proxy server, application gateway, or circuit-level gatewaytechniques.

The web browsing server 102 then uses the web site record and anyadditional data and executes the extraction agent 400 and relevantcontent descriptor file 406 to retrieve the requested information.

The information received from the responding web site 114 is thenprocessed by the web browsing server 102 according to the contentdescriptor file 406 retrieval by the extraction agent. This processedresponse is then transmitted 30 to the media server 106 for conversioninto audio messages using either the speech synthesis software 302 orselecting among a database of prerecorded voice responses containedwithin the database 100.

As mentioned above, each web site record contains a rank number 202 asshown in FIG. 2. For each category searchable by a user, the database100 may list several web sites, each with a different rank number 202.As an example, three different web sites may be listed as searchableunder the category of “restaurants”. Each of those web sites will beassigned a rank number such as 1, 2, or 3. The site with the highestrank (i.e., rank=1) will be the first web site accessed by a webbrowsing server 102. If the information requested by the user cannot befound at this first web site, then the web browsing server 102 willsearch the second ranked web site and so forth down the line until therequested information is retrieved or no more web sites left to check.

The web site ranking method and system of the present invention providesrobustness to the voice browser system and enables it to adapt tochanges that may occur as web sites evolve. For instance, theinformation required by a web site 114 to perform a search or the formatof the reported response data may change. Without the ability toadequately monitor and detect these changes, a search requested by auser may provide an incomplete response, no response, or an error. Suchuseless responses may result from incomplete data being provided to theweb site 114 or the web browsing server 102 being unable to recognizethe response data messages received from the searched web site 114.

The robustness and reliability of the voice browsing system of thepresent invention is further improved by the addition of a pollingmechanism. This polling mechanism continually polls or “pings” each ofthe sites listed in the database 100. During this polling function, aweb browsing server 102 sends brief data requests or “polling digitaldata” to each web site listed in database 100. The web browsing server102 monitors the response received from each web site and determineswhether it is a complete response and whether the response is in theexpected format specified by the content descriptor file 406 used by theextraction agent 400. The polled web sites that provide completeresponses in the format expected by the extraction agent 400 have theirranking established based on their “response lime”. That is, web siteswith faster response times will be will be assigned higher rankings thanthose with slower response times. If the web browsing server 102receives no response from the polled web site or if the responsereceived is not in the expected format, then the rank of that web siteis lowered. Additionally, the web browsing server contains a warningmechanism that generates a warning message or alarm for the systemadministrator indicating that the specified web site has been modifiedor is not responsive and requires further review.

Since the web browsing servers 102 access web sites based upon theirranking number, only those web sites that produce useful and error-freeresponses will be used by the voice browser system to gather informationrequested by the user. Further, since the ranking numbers are also basedupon the speed of a web site in providing responses, only the most timeefficient sites are accessed. This system assures that users will getcomplete, timely, and relevant responses to their requests. Without thisfeature, users may be provided with information that is not relevant totheir request or may not get any information at all. The constantpolling and reranking of the web sites used within each category allowsthe voice browser of the present invention to operate efficiently.Finally, it allows the voice browser system of the present invention todynamically adapt to changes in the rapidly evolving web sites thatexist on the Internet.

It should be noted that the web sites accessible by the voice browser ofthe preferred embodiment may use any type of mark-up language, includingExtensible Markup Language (XML), Wireless Markup Language (WML),Handheld Device Markup Language (HDML), Hyper Text Markup Language(HTML), or any variation of these languages.

A second embodiment of the present invention is depicted in FIG. 5. Thisembodiment provides a system and method for controlling a variety ofdevices 500 connected to a network 502 by using conversational speechcommands spoken into a voice enabled device 504 (i.e., wireline orwireless telephones, Internet Protocol (EP) phones, or other specialwireless units). The networked devices may include various householddevices. For instance, voice commands may be used to control householdsecurity systems, VCRs, TVs, outdoor or indoor lighting, sprinklers, orheating and air conditioning systems.

Each of these devices 500 is connected to a network 502. These devices500 may contain embedded microprocessors or may be connected to othercomputer equipment that allow the device 500 to communicate with network502. In the preferred embodiment, the devices 500 appear as “web sites”connected to the network 502. This allows a network interface system,such as a device browsing server 506, a database 508, and a userinterface system, such as a media server 510, to operate similar to theweb browsing server 102, database 100 and media server 106 described inthe first preferred embodiment above. A network 502 interfaces with oneor more network interface systems, which are shown as device browsingservers 506 in FIG. 5. The device browsing servers perform many of thesame functions and operate in much the same way as the web browsingservers 102 discuss above in the first preferred embodiment. The devicebrowsing servers 506 are also connected to a database 508.

Database 508 lists all devices that are connected to the network 502.For each device 500, the database 508 contains a record similar to thatshown in FIG. 2. Each record will contain at least a device identifier,which may be in the form of a URL, and a command to “content extractionagent” contained in the device browsing server 506. Database 508 mayalso include any other data or software necessary to test and administerthe device browsing system.

The content extraction agent operates similarly to that described in thefirst embodiment. A device descriptor file contains a listing of theoptions and functions available for each of the devices 500 connected onthe network 502. Furthermore, the device descriptor file contains theinformation necessary to properly communicate with the networked devices500. Such information would include, for example, communicationprotocols, message formatting requirements, and required operatingparameters.

The device browsing server 506 receives messages from the variousnetworked devices 500, appropriately formats those messages andtransmits them to one or more media servers 510 which are part of thedevice browsing system. The user's voice enabled devices 504 can accessthe device browsing system by calling into a media server 510 via thePublic Switched Telephone Network (PSTN) 512. In the preferredembodiment, the device browsing server is based upon Intel's DualPentium III 730 MHz microprocessor system.

The media servers 510 act as user interface systems and perform thefunctions of natural speech recognition, speech synthesis, dataprocessing, and call handling. The media server 510 operates similarlyto the media server 106 depicted in FIG. 3. When data is received fromthe device browser server 506, the media server 510 will convert thedata into audio messages via a speech synthesis engine that are thentransmitted to the voice enabled device of the user 504. Speech commandsreceived from the voice enabled device of the user 504 are convertedinto data messages via a speech recognition engine running on the mediaserver 510. A preferred speech recognition engine is developed by NuanceCommunications of 1380 Willow Road, Menlo Park, Calif. 94025(www.nuance.com). A preferred speech synthesis engine is developed byLernout and Hauspie Speech Products, 52 Third Avenue, Burlington, Mass.01803 (www.lhsl.com). The media servers 510 of the preferred embodimentare based on Intel's Dual Pentium III 730 MHz microprocessor system. Aspecific example for using the system and method of this embodiment ofthe invention will now be given.

First, a user may call into a media server 510 by dialing a telephonenumber associated with an established device browsing system. Once theuser is connected, the IVR application of the media server 510 willprovide the user with a list of available systems that may be monitoredor controlled based upon information contained in database 508.

For example, the user may be provided with the option to select “HomeSystems” or “Office Systems”. The user may then speak the command“access home systems”. The media server 510 would then access thedatabase 508 and provide the user with a listing of the home subsystemsor devices 500 available on the network 502 for the user to monitor andcontrol. For instance, the user may be given a listing of subsystemssuch as “Outdoor Lighting System”, “Indoor Lighting System”, “SecuritySystem”, or “Heating and Air Conditioning System”. The user may thenselect the indoor lighting subsystem by speaking the command “IndoorLighting System”. The IVR application would then provide the user with aset of options related to the indoor lighting system. For instance themedia server 510 may then provide a listing such as “Dining Room”,“Living Room”, “Kitchen”, or “Bedroom”. After selecting the desiredroom, the IVR application would provide the user with the options tohear the “status” of the lighting in that room or to “turn on”, “turnoff', or “dim” the lighting in the desired room. These commands areprovided by the user by speaking the desired command into the usersvoice enabled device 504. The media server 510 receives this command andtranslates it into a data message. This data message is then forwardedto the device browsing server 506 which routes the message to theappropriate device 500.

The device browsing system 514 of this embodiment of the presentinvention also provides the same robustness and reliability featuresdescribed in the first embodiment. The device browsing system 514 hasthe ability to detect whether new devices have been added to the systemor whether current devices are out-of-service. This robustness isachieved by periodically polling or “pinging” all devices 500 listed indatabase 508. The device browsing server 506 periodically polls eachdevice 500 and monitors the response. If the device browsing server 506receives a recognized and expected response from the polled device, thenthe device is categorized as being recognized and in-service. However,if the device browsing server 506 does not receive a response from thepolled device 500 or receives an unexpected response, then the device500 is marked as being either new or out-of-service. A warning messageor a report may then be generated for the user indicating that a newdevice has been detected or that an existing device is experiencingtrouble.

Therefore, this embodiment allows users to remotely monitor and controlany devices that are connected to a network, such as devices within ahome or office. Furthermore, no special telecommunications equipment isrequired for users to remotely access the device browser system. Usersmay use any type of voice enabled device (i.e., wireline or wirelesstelephones, IP phones, or other wireless units) available to them.Furthermore, a user may perform these functions from anywhere withouthaving to subscribe to additional services. Therefore, no additionalexpenses are incurred by the user.

The descriptions of the preferred embodiments described above are setforth for illustrative purposes and are not intended to limit thepresent invention in any manner. Equivalent approaches are intended tobe included within the scope of the present invention. While the presentinvention has been described with reference to the particularembodiments illustrated, those skilled in the art will recognize thatmany changes and variations may be made thereto without departing fromthe spirit and scope of the present invention. These embodiments andobvious variations thereof are contemplated as falling within the scopeand spirit of the claimed invention.

What is claimed:
 1. A system comprising: (a) at least one dataprocessor, the at least one data processor operatively coupled to aplurality of communication data networks; (b) at least onespeaker-independent speech-recognition engine operatively coupled to thedata processor; (c) memory accessible to the at least one data processorand storing at least: (i) an instruction set for querying of informationto be retrieved from a plurality of sources coupled to the plurality ofcommunication data networks, the instruction set comprising: anindication of the plurality of sources, each identified by a sourceidentifier, and each identifying certain information to be retrievedfrom the source identifier, and (ii) at least one recognition grammarexecutable code corresponding to each instruction set and correspondingto data characterizing audio containing a naturally-spoken-speechcommand including an information request, (d) wherein the at least onespeaker-independent-speech-recognition engine is adapted to: (1) receivethe data characterizing audio containing the naturally-spoken-speechcommand from a voice-enabled device via a first of the plurality ofcommunication data networks; (2) to recognize phenomes in the datacharacterizing audio containing naturally-spoken-speech commands tounderstand spoken words; and (3) to generate recognition results data,(e) wherein the at least one data processor is adapted to: (1) selectthe corresponding at least one recognition grammar executable code uponreceiving the data characterizing the audio containing thenaturally-spoken-speech command and to convert the data characterizingthe audio containing the naturally-spoken-speech command into a datamessage for transmission to a network interface adapted to access asecond of the plurality of communication data networks; and (2) retrievethe instruction set corresponding to the recognition grammar executablecodes provided by the at least onespeaker-independent-speech-recognition engine and to access theinformation source queried by the instruction set to obtain at least apart of the information to be retrieved, and (f) at least onespeech-synthesis device operatively coupled to the at least one dataprocessor, the at least one speech-synthesis device configured toproduce an audio message relating to any resulting information retrievedfrom the plurality of information sources including a text-to-speechconversion of at least certain data in said any resulting informationretrieved from the plurality of information sources, and to convey theaudio message via the voice-enabled device.
 2. The system of claim 1,wherein the plurality of communication data networks includes theInternet.
 3. The system of claim 1, wherein the plurality ofcommunication data networks include a local-area network.
 4. The systemof claim 1, wherein the voice-enabled device is a home device.
 5. Themethod of claim 1, wherein the voice-enabled device is at least one of agroup of an IP telephone, a cellular phone, a personal computer, a mediaplayer appliance, and a television or other video display device.
 6. Thesystem of claim 1, wherein the speaker-independent-speech-recognitionengine is adapted to analyze the phonemes to recognize conversationalnaturally-spoken-speech commands.
 7. The system of claim 1, wherein thespeaker-independent-speech-recognition engine is adapted to recognizethe naturally-spoken-speech commands.
 8. The system of claim 1, whereinthe instruction set executable code further comprises: a contentdescriptor associated with each information-source identifier, thecontent descriptor pre-defining a portion of the information sourcecontaining the information to be retrieved.
 9. The system of claim 1,further comprising: a database operatively connected to the dataprocessor, the database adapted to store the information gathered fromthe information sources in response to the information requests.
 10. Thesystem of claim 8, wherein each recognition grammar executable code andeach instruction set for querying of information to be retrieved arestored in the database.
 11. A method comprising: (a) providing at leastone data processor, the data processor operatively coupled to aplurality of communication data networks; (b) providing at least onespeaker-independent-speech-recognition engine operatively coupled to theat least one data processor (c) providing memory accessible to the dataprocessor storing at least: (i) an instruction set for querying of theinformation to be retrieved from a plurality of sources coupled to theplurality of communication data networks, the instruction setcomprising: an indication of the plurality of sources, each identifiedby an information-source identifier, and each identifying certaininformation to be retrieved from the information-source identifier, and(ii) at least one recognition grammar executable code corresponding toeach instruction set and corresponding to data characterizing audiocontaining a naturally-spoken-speech command including an informationrequest, (d) the at least one speaker-independent-speech-recognitionengine: (i) receiving the data characterizing audio containing thenaturally-spoken-speech command from the voice-enabled device via afirst of the communication data networks, (ii) recognizing phenomes inthe data characterizing audio containing the naturally-spoken-speechcommands to understand spoken words, and (iii) generatingrecognition-results data, (e) the least one data processor programmedto: (i) select the corresponding at least one recognition grammarexecutable code upon receiving the data characterizing audio containingthe naturally-spoken-speech command and convert the data characterizingaudio containing naturally-spoken-speech command into a data message fortransmission to a network interface adapted to access a second of theone communication networks; and (ii) retrieve the instruction setcorresponding to the recognition grammar executable provided by the atleast one speaker-independent-speech-recognition device and access theinformation source identified by the instruction set to obtain at leasta part of the information to be retrieved; and (f) providing at leastone speech-synthesis device operatively connected to the at least onedata processor, and by the at least one speech-synthesis device adaptedto: (i) produce an audio message relating to any resulting informationretrieved from the plurality of information sources includingtext-to-speech conversion of said any resulting information retrievedfrom the plurality of information sources, and (ii) transmit the audiomessage via the voice-enabled device.
 12. The method of claim 11,wherein the plurality of communication data networks includes theInternet.
 13. The method of claim 11, wherein the plurality ofcommunication data networks include a local-area network.
 14. The methodof claim 11, wherein the voice-enabled device is a telephone.
 15. Themethod of claim 11, wherein the speaker-independent-speech-recognitionengine is adapted to analyze the phonemes to recognize conversationalnaturally-spoken-speech commands.
 16. The method of claim 11, whereinthe speaker-independent-speech-recognition engine is adapted torecognize the naturally-spoken-speech commands.
 17. The method of claim11, wherein the instruction set executable code further comprises: acontent descriptor associated with each information-source identifier,the content descriptor pre-defining a portion of the information sourcecontaining the information to be retrieved.
 18. The method of claim 11,further comprising: providing a database and operatively connecting thedatabase to the data processor and storing the information gathered fromthe information sources in response to the information requests in thedatabase.
 19. The method of claim 18, wherein each recognition grammarexecutable code and each instruction set are stored in the database. 20.The method of claim 18, wherein the voice-enabled device is at least oneof a group of an IP telephone, a cellular phone, a personal computer, amedia player appliance, and a television or other video display device.